python加密打包程序的方法是什么

您所在的位置:网站首页 Dummy load 干什么用的 python加密打包程序的方法是什么

python加密打包程序的方法是什么

2023-04-29 21:13| 来源: 网络整理| 查看: 265

python加密打包程序的方法是什么 发布时间:2023-04-18 16:24:11 来源:亿速云 阅读:70 作者:iii 栏目:开发技术

这篇文章主要介绍“python加密打包程序的方法是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“python加密打包程序的方法是什么”文章能帮助大家解决问题。

python加密打包程序

加密方式:将py文件转为pyd格式

安装easycython模块 pip install easycython

使用easycython命令将py转pyd: easycython xx.py, 会在同一目录生成xx.pyd(如果是64位系统生成的文件名为xx.cp36-win_amd64.pyd);

将xx.cp36-win_amd64.pyd重命名为xx.pyd;

使用pyinstaller打包(由于xx.py和xx.pyd在同一目录, pyinstaller会优先打包pyd), 打包时添加—hidden-import xx选项.

生成的打包文件中会包含xx.pyd;

注意: 如果打包时使用了—key选项, 但打包的模块是pyd格式的, 则pyd文件不会被加密, 只是打包

打包脚本:        

 打包参数说明:       

 -F:仅仅生成一个文件,不暴露其他信息,启动较慢。

        -D:生成一个文件夹,里面是多文件模式,启动快。

        -w:窗口模式打包,不显示控制台。

示例

pyinstaller -F -w -i logo.ico python_file1.py  python_file2.py  python_file3.py补充:Python实现文件简单加解密一、基础知识

python中的异或操作符为 ^ ,也记作XOR,按位异或的结果是:值相同时异或为0,值不同时异或为1,一共有四种情况:0 ^ 0 = 0,0 ^ 1 = 1,1 ^ 0 = 1,1 ^ 1 = 0,使用异或可以对文件进行简单的加解密操作。

加密操作:首先将文件转换为二进制数,再随机生成一个与该二进制等长的密钥,将文件的二进制数与密钥进行异或操作,就能得到加密后的二进制数,存储为加密文件。

解密操作:将加密后的二进制文件与密钥再进行异或操作,就能得到原二进制数,再将原二进制数恢复成文件。

二、加解密算法1.导入运行库import json from pathlib import Path from secrets import token_bytes import argparse2.定义生成密钥函数def random_key(length):     key = token_bytes(nbytes=length)            #根据指定长度生成随机密钥     key_int = int.from_bytes(key, 'big')        #将byte转换为int     return key_int3.定义加解密单元def encrypt(raw):                                    #加密单元     raw_bytes = raw.encode()                         #将字符串编码成字节串     raw_int = int.from_bytes(raw_bytes, 'big')       #将byte转换成int     key_int = random_key(len(raw_bytes))             #根据长度生成密钥     return raw_int ^ key_int, key_int         #将密钥与文件异或,返回异或后的结果和密钥   def decrypt(encrypted, key_int):                             #解密单元     decrypted = encrypted ^ key_int                          #将加密后的文件与密钥异或     length = (decrypted.bit_length() + 7) // 8               #计算所占比特大小     decrypted_bytes = int.to_bytes(decrypted, length, 'big') #将int转换回byte     return decrypted_bytes.decode()                          #解码后返回4.加密文件def encrypt_file(path, key_path=None, *, encoding='utf-8'):    #参数path指定文件地址     path = Path(path)     cwd = path.cwd() / path.name.split('.')[0]     path_encrypted = cwd / path.name     if key_path is None:         key_path = cwd / 'key'     if not cwd.exists():         cwd.mkdir()         path_encrypted.touch()         key_path.touch()       //打开文件并将内容写入     with path.open('rt', encoding=encoding) as f1, \             path_encrypted.open('wt', encoding=encoding) as f2, \             key_path.open('wt', encoding=encoding) as f3:         encrypted, key = encrypt(f1.read())         json.dump(encrypted, f2)         json.dump(key, f3)5.解密文件def decrypt_file(path_encrypted, key_path=None, *, encoding='utf-8'):     path_encrypted = Path(path_encrypted)     cwd = path_encrypted.cwd()     path_decrypted = cwd / 'decrypted'     if not path_decrypted.exists():         path_decrypted.mkdir()         path_decrypted /= path_encrypted.name         path_decrypted.touch()     if key_path is None:         key_path = cwd / 'key'     with path_encrypted.open('rt', encoding=encoding) as f1, \             key_path.open('rt', encoding=encoding) as f2, \             path_decrypted.open('wt', encoding=encoding) as f3:         decrypted = decrypt(json.load(f1), json.load(f2))         f3.write(decrypted)三、测试

将要加密的文件放到py文件同级目录下,运行以下将1.txt加密。

encrypt_file("D:/PyCharm Community Edition 2021.3.2/Workplace/encryption/1.txt")

python加密打包程序的方法是什么

 将要解密的文件和密钥放到py文件同级目录下,运行以下将1.txt解密还原。

decrypt_file("D:/PyCharm Community Edition 2021.3.2/Workplace/encryption/1.txt")

python加密打包程序的方法是什么

关于“python加密打包程序的方法是什么”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注亿速云行业资讯频道,小编每天都会为大家更新不同的知识点。

推荐阅读: 怎么用ultraedit写python python找不到文件如何解决

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:[email protected]进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

python 上一篇新闻:Java中怎么对字符串进行utf-8编码 下一篇新闻:c++正则表达式怎么应用 猜你喜欢 Spark SQL中怎么创建DataFrames 如何用Pyecharts生成云词 怎么为JQuery EasyUI表单组件增加焦点切换功能 Spark的相关问题有哪些 Hadoop集群同步怎么实现 MySQL Delete PHP有什么作用 Actor并行化的wordcount怎么实现 Scala for循环怎么使用 Hadoop机架怎么配置 HBase过滤器由什么组成


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3